import { createApp,reactive } from 'vue'
import { createStore } from 'vuex'
import {numberSafeCompareFunction} from "ol/array";
/*

const  store={
    state:reactive({
        message:'helloworld',
        gushiList:[]
    }),
    setMessage(value){
        this.state.message=value;
    },
    setList(list){
        this.state.gushiList=list
    }
}
export default store*/
/*store仓库，保存所有组件都用到的数据*/
export default createStore({
    /*相当于全局数据，所有组件都可以调用*/
    state:{
        //用户登录存储的token
        token:localStorage.getItem('token') ? localStorage.getItem('token') : '',
        message:'helloworld',
        gushiList:[],
        //全局变量map
        map:[],
        //后端数据库端扣
        dbApi:'http://127.0.0.1:5000/',
        //图片服务器
        imgurl:'http://114.132.220.147/',
        //自定义图层 全局变量
        checkDiyLayerList:[],
        //自定义图层 道路流量
        checkHighLayerList:[],
        //单车调度
        checkDispatchLayerList:[],
        //停车中心点与街景拍摄点的偏移量
        streetPhotoMove:null,
        //isShowGreenTrace全局变量
        isShowGreenTrace:false,
        //isShowSmallDispatch全局变量
        isShowAreaSmartDispatch:false,
        //isShowAreaXQ全局变量
        isShowAreaXq:false,
        //isShowCityDispatch全局变量
        isShowCitySmartDispatch:false,
        //isShowCityXQ全局变量
        isShowCityXq:false,
        //test
        test:0
    },
    //类似于vue中的computed，进行缓存，对于Store中的数据进行加工处理形成新的数据
    getters:{

    },
    //修改状态的方法 更改 Vuex 的 store 中的状态的唯一方法是提交 mutation 同步操作
    mutations:{
        setMessage(state,value){
            state.message=value;
        },
        setList(state,list){
            state.gushiList=list
        },
        changeMap(state,mapChange){
            state.map=mapChange
        },
        changeTest(state,testChange){
            state.test=testChange
        },
        changeCheckDiyLayerList(state,changeCheckDiyLayerList){
            state.checkDiyLayerList.push(changeCheckDiyLayerList)
        },
        changeCheckHighLayerList(state,changeCheckHighLayerList){
            state.checkHighLayerList.push(changeCheckHighLayerList)
        },
        checkDispatchLayerList(state, checkDispatchLayerList){
            state.checkDispatchLayerList.push(checkDispatchLayerList)
        },
        changeStreetPhotoMove(state,changeStreetPhotoMove){
            state.streetPhotoMove=changeStreetPhotoMove
        },
        changeIsShowGreenTrace(state,changeIsShowGreenTrace){
            state.isShowGreenTrace=changeIsShowGreenTrace
        },
        /*存储与删除token*/
        setToken(state,token) {
            state.token =token;
            localStorage.setItem("token",token);     //存储token
        },
        delToken(state) {
            state.token = '';
            localStorage.removeItem("token");    //删除token
        },
        //控制isShowSmallDispatch
        changeIsShowSmallDispatch(state,changeIsShowSmallDispatch)
        {
            state.isShowAreaSmartDispatch=changeIsShowSmallDispatch
        },
        changeIsShowAreaXq(state,changeIsShowAreaXq){
            state.isShowAreaXq=changeIsShowAreaXq
        },
        //控制isShowCitySmartDispatch
        changeIsShowCityDispatch(state,changeIsShowCityDispatch)
        {
            state.isShowCitySmartDispatch=changeIsShowCityDispatch
        },
        changeIsShowCityXq(state,changeIsShowCityXq){
            state.isShowCityXq=changeIsShowCityXq
        }
    },
    //Action和Mutation相似，Mutation 不能进行异步操作，若要进行异步操作，就得使用Action异步操作
    //操作mutations中的函数
    //调用方法：this.$store.dispatch("reduce")
    actions:{

    },
    //当遇见大型项目时，数据量大，store就会显得很臃肿
    //
    // 为了解决以上问题，Vuex 允许我们将 store 分割成模块（module）。每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块——从上至下进行同样方式的分割：
    modules:{
    }
})